package com.pic.mgt.file.io;

import java.io.File;
import java.io.IOException;

public interface FileOperation {
	
	/**
	 * 檔案搬移到指定的目錄下，若目標目錄內有相同的檔案，則會被移除。
	 * @param srcFile
	 * @param destFolder
	 * @return 搬移後的 File 回傳
	 * @throws IOException
	 */
	public File moveFileToFolder (File srcFile,
								  File destFolder) throws IOException;
	
	/**
	 * 檔案案搬移到指定的檔案。若是來源和目的檔案為同一個檔案系統，則會直接rename；
	 * 若不同檔案系統，則會進行 copy 和 delete。
	 * @param srcFile
	 * @param destFile
	 * @return
	 * @throws IOException
	 */
	public File moveFileToFile (File srcFile, File destFile) throws IOException;
	
	/**
	 * 檔案複製到指定的目錄下，若目標目錄內有相同的檔案，則會先被蓋過。若目標目錄結構不存在,則會自動被建立。
	 * @param srcFile
	 * @param destFolder
	 * @throws IOException
	 */
	public void copyFileToFolder(File srcFile,
								 File destFolder) throws IOException;
	
	/**
	 * 檔案複製到指定的檔名，若目標目錄內有相同的檔案，則會先被蓋過。
	 * @param srcFile
	 * @param destFile
	 * @throws IOException
	 */
	public void copyFileToFile(File srcFile, File destFile) throws IOException;
	
	/**
	 * 刪除檔案或目錄。
	 */
	public void deleteFile(File file) throws IOException;
	
	/**
	 * 建立目錄。
	 * @param folder
	 * @throws IOException
	 */
	public void createFolder(File folder) throws IOException;
}
